IAxis.CyclicSwitch 方法
使用轴位置来控制重复触发数位输出的开关。当轴达到特定的位置,开关即开启或关闭,开关可透过轴向前或向后移动的方向来控制。
命名空间:IntervalZero.KINGSTAR.Base.Class组合: IntervalZero.KINGSTAR.Base.Class (于 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0
语法
void DigitalCamSwitch(
McOutput output,
double startPosition,
McCamSwitch cyclicSwitch,
McLengthType intervalType,
double interval,
McLengthType durationType,
double duration,
McSource valueSource
)Sub DigitalCamSwitch(
output As McOutput,
startPosition As Double,
cyclicSwitch As McCamSwitch,
intervalType As McLengthType,
interval As Double,
durationType As McLengthType,
duration As Double,
valueSource As McSource
)参数
output
型别:McOutput
选择对应轨道所控制的数位输出。
startPosition
型别:double
开关开启的位置。
cyclicSwitch
型别:McCamSwitch
控制开关动作。
- TrackNumber:值必须为零。
- FirstOnPosition:值必须为非负,为各周期开始位置相关的距离。
- LastOnPosition:值必须为正,且较 FirstOnPosition 为大,为各周期开始位置相关的距离。
- Duration:值必须为正。
intervalType
型别:McLengthType
Interval 类型。可使用 mcDistance 与 mcTime。
interval
型别:double
周期长度。依照所选的 IntervalType 而定,值必须为正。
durationType
型别:McLengthType
Duration 类型。可使用 mcDistance 与 mcCount。
duration
型别:double
周期重复的持续时间,依照所选的 DurationType 而定,值必须为正。
valueSource
型别:McSource
定义轴值的来源,例如位置:
- mcCommandedValue, mcSetValue – 同步设定值。建议使用此设定。
- mcActualValue – 同步实际值。此设定可能不稳定。
- mcSecondEncoderValue – 从第二编码器读取的实际值。
备注
- McCamSwitch 为供应商特定的结构,用于定义数位凸轮的开关。
- McOutput 为供应商特定的结构,用于连接至(实体)输出,若使的是您个人的伺服驱动器的数位输出 (DO),需在 ISubsystem.Start 前使用 ISubsystem.AxisOutput。
- 在 McCamSwitch 类别中,当 CamSwitchMode 选择为位置时不支援以下组合:
- IntervalType: mcTime;DurationType: mcDistance.
- IntervalType: mcTime;DurationType: mcCount.
使用案例:
以下案例虽来自于 RT/Win32 介面,但有助于理解周期开关的运作方式。
案例 1
循环开关在持续时间内完成其任务。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
40, //FirstOnPosition
60, //LastOnPosition
1, //AxisDirection. 1 = Positive.
0, //CamSwitchMode. 0 = Position.
0 //Duration. It is not used in this case.
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcDistance, //IntervalType
100, //Interval
mcDistance, //DurationType
250, //Duration
mcSetValue //ValueSource
);
案例 2
循环开关在完成任务之前中止。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
0, //FirstOnPosition
0, //LastOnPosition
1, //AxisDirection. 1 = Positive.
1, //CamSwitchMode. 1 = Time.
0.003 //Duration
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcTime, //IntervalType
0.005, //Interval
mcCount, //DurationType
3, //Duration
mcSetValue //ValueSource
);
参见